package com.jietuo.class01;

import java.util.Arrays;

/**
 * @author zhangx & jietuo_zx@163.com
 * @version 1.0
 * @date 2024/3/1
 * @description: 冒泡排序
 */
public class Code02_BubbleSort {

    public static void main(String[] args) {
        int[] arr = new int[]{4, 7, 2, 9, 5, 10};
        int[] ints = bubbleSort(arr);
        System.out.println(Arrays.toString(ints));
    }

    /**
     * 冒泡排序
     * step1: 0 和 1 的位子比较，大的往后放
     * step2: 1 和 2 的位子比较，大的往后放
     * step3: ...
     * step: n-2 和 n-1 的位子比较，大的往后放
     * 也就是先找最大的
     *
     * @param array 待排序数组
     * @return 排好序的数组
     */
    public static int[] bubbleSort(int[] array) {
        for (int e = array.length - 1; e > 0; e--) {
            for (int i = 0; i < e; i++) {
                if (array[i] > array[i + 1]) {
                    swap(array, i, i + 1);
                }
            }
        }
        return array;
    }

    private static void swap(int[] array, int i, int j) {
        array[i] = array[i] ^ array[j];
        array[j] = array[i] ^ array[j];
        array[i] = array[i] ^ array[j];
    }
}
